package ioc.bean;

import lombok.*;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;

import java.beans.ConstructorProperties;

/**
 * @see Setter // 为字段生成 set 方法
 * @see Getter // 为字段生成 get 方法
 * @see ToString // 为当前类生成 ToString 方法，of 为要显示的字段，exclude 为不显示的字段，默认全部显示
 * @see NoArgsConstructor // 为当前类生成无参构造器
 * @see AllArgsConstructor // 为当前类生成全参构造器
 * @see EqualsAndHashCode // 生成 equals 和 hashCode 方法
 * @see Slf4j // 可以在类中直接使用日志 log 对象
 * @see Log4j
 * @see Data // 包含了 @Setter，@Getter，@ToString，@EqualsAndHashCode，还会生成 canEqualf 方法
 * @see Value
 * <p>
 * 1、基本数值
 * 2、可以写SpEL； #{}
 * 3、可以写${}；取出配置文件【properties】中的值（在运行环境变量里面的值）
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
public class People {
    @Value("张三")
    String name;

    @Value("#{20-2}")
    Integer age;

    @Value("${people.nickName}")
    String nickName;

    @ConstructorProperties({"namex", "agex", "nickNamex"})
    public People(String name, Integer age, String nickName) {
        this.name = name;
        this.age = age;
        this.nickName = nickName;
    }
}
